//axiosInstance.js
//导入axios
import axios from 'axios'
import {useUserStore} from "../stores/user.js";
import router from "../router/router.js";

//使用axios下面的create([config])方法创建axios实例，其中config参数为axios最基本的配置信息。
const axiosObj = axios.create({
    //请求后端数据的根路径地址，每次使用axios异步请求 都要填写域名比较麻烦
    //可以设置一个baseUrl,这样少写点代码,
    //而且后面更换域名时,生产环境和开发环境统一时很有用
    baseURL:'http://localhost:8080',
    timeout: 5000                   //请求超时设置，单位ms
})
// 请求拦截器
axiosObj.interceptors.request.use(
    config => {
        const userStore = useUserStore()
        const token = userStore.userInfo.saTokenInfo?.tokenValue
        if (token) {
            config.headers['satoken'] = token
        }
        return config
    },
    error => {
        return Promise.reject(error)
    }
)

// 响应拦截器（可选）
axiosObj.interceptors.response.use(
    response => {
        return response
    },
    error => {
        if (error.response?.status === 401) {
            // token 过期或无效，清除用户信息
            const userStore = useUserStore()
            userStore.$reset()
            // 跳转到登录页
            //router.push('/login')
        }
        return Promise.reject(error)
    }
)

//导出axios实例模块
export default axiosObj;